<?php
$this->useClass("Action_Community_FeedHandler");
class Action_Community_ShowJoinQueue extends Action_Community_FeedHandler
{
	var $ajax_functions = array(
		'ajax_doDeclineUser',
		'ajax_doApproveUser'
		);
	
	public function getFeedModel() {
		$this->rh->UseClass("AggregatedModel_Feed_FeedInterface");
		$this->rh->UseClass("AggregatedModel_Feed_ReaderUsers");
		
		return new AggregatedModel_Feed_ReaderUsers();
	}
	
	protected function determineCustomModelParams() {
		$this->setParam("filter_by_jq", 1);
		$this->setParam("no_pager", 1);
	}
	
	public function ajax_doApproveUser( $user_oid ) {
		$cp = &$this->rh->ctx->cp;
		$status = &$cp->add_node('status');
		$data = &$cp->add_node('data');
		
		$jc = $this->ctx->mm->getModel("JoinCommunity", "a");
		$st = $jc->approveUser($user_oid);
		
		if (($st == 0) || ($st == 3)) {		
			$status->set_data("0");
		} elseif ($st == 1) {
			$status->set_data($st);
			$data->set_data("Ошибка при добавлении в хранилище членов сообщества. ");
		} elseif ($st == 2) {
			$status->set_data($st);
			$data->set_data("Этого пользователя нет в очереди на вступление.");
		} else {
			
			$data->set_data("Неизвестная ошибка.");
			$status->set_data($st);
		}
	}
	
	public function ajax_doDeclineUser( $user_oid )
	{
		$cp = &$this->rh->ctx->cp;
		$status = &$cp->add_node('status');
		$data = &$cp->add_node('data');
		
		$jc = $this->ctx->mm->getModel("JoinCommunity", "a");
		$st = $jc->declineUser($user_oid);
		
		if (($st == 0) || ($st==3)) { 
			$status->set_data("0");
		} elseif ($st == 1) {
			$status->set_data("1");
			$data->set_data("Этого пользователя нет в очереди на вступление.");
		} else { 
			$status->set_data($st);
			$data->set_data("Unknown error.");
		}
	}

	public function process ()
	{
		$aa = &$this->aa;
		if (!$aa->is_granted(array('community_edit'))) {
			echo "access denied";
			return false;
		}

		// -- old theme HACK : lucky -- {{{
		$community_skin = 'platonica';
		$tpl = $this->ctx->tpl;
		$community_model = $this->ctx->mm->getModel("Community");
		$community_model->setDefaultSkin($community_skin);
		$tpl->setSkin($community_skin);
		$views_php = $tpl->findFile('', 'views', $tpl->_skin, 'php');
		unset ($config);
		include $views_php; // got $config
		$this->ctx->rh->views->setViewConfig($config);
		// -- old theme HACK : lucky -- }}}


		
		$view = $this->rh->views->findByName('joinqueue');
		$view->data = $this->aa->template_data;
		
		$this->model->doStuff();

		$view->data['items'] = $this->model->getItems();
		$this->rh->response->setContent( $view );
	} // end of function execute

}
